package thieft;


public class Policia {
	
    private int arrestos;
    private String nombre;
    private Estado estado;
    private Capital capital;
    private OrdenDeArresto ordenDeArresto;
    private Vuelo vuelo;

    public Policia() {
    
        this.estado = Novato.obtenerEstado();
        this.arrestos = 0;
        this.ordenDeArresto = new OrdenDeArresto();
        this.vuelo = new Vuelo();
    }

    public void modificarNombre(String nombre) {
    	
    	this.nombre = nombre;
    }
    
    public String obtenerNombre() {
    	
        return this.nombre;
    }

    public Estado obtenerEstado() {
    	
        return this.estado;
    }

    public void capitalInicio(Capital capitalInicio) {
    	
    	this.capital = capitalInicio;
    }
    public Capital obtenerCapital() {
    	
        return this.capital;
    }

    public int obtenerArrestos() {
    	
        return this.arrestos;
    }
    
    private void verificarCambioDeEstado() {
    	
        if(this.arrestos >= this.estado.arrestosMaximo())
            this.estado = this.estado.obtenerNuevoEstado();
    }

    public void aumentarArrestos() {
    	
        this.arrestos = this.arrestos + 1;
        this.verificarCambioDeEstado();
    }

    public void viajarACapital(Capital capitalDestino) {
    	
    	Posicion posicionActual = this.capital.obtenerPosicion();
        
        int distanciaKmARecorrer = posicionActual.distanciaKm(capitalDestino.obtenerPosicion());
        int horasDeVuelo = vuelo.obtenerHorasDeVuelo(distanciaKmARecorrer, this.obtenerEstado().obtenerVelocidadDeVuelo());
        
        Tiempo.obtenerInstancia().pasaronHoras(horasDeVuelo);
        this.capital = capitalDestino;
    }
    
    public OrdenDeArresto obtenerOrdenDeArresto() {
    	
    	return this.ordenDeArresto;
    }
}

